﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>创建缓冲区 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The 创建缓冲区 function allocates a block of memory and returns it within a Buffer 对象." />
<meta name="ahk:equiv-v1" content="commands/VarSetCapacity.htm" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

 <h1>创建缓冲区</h1>

 <p>分配一块内存并将其返回到<a href="../objects/Buffer.htm">缓冲</a>对象中.</p>

<pre class="Syntax">Buffer := <span class="func">创建缓冲区</span>(ByteCount <span class="optional">, FillByte</span>)</pre>
<h2 id="Parameters">参数</h2>
<dl>
  <dt>ByteCount</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
    <p>要分配的字节数. 对应于 <a href="../objects/Buffer.htm#Size">Buffer.Size</a>.</p>
  </dd>
  <dt>FillByte</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
    <p>指定一个介于 0 到 255 之间的数字, 以将缓冲中的每个字节设置为该数字.</p>
    <p>在不需要先读取缓冲而直接写入的情况下, 通常应将其省略, 因为它的时间开销与字节数成正比. 如果省略, 则不初始化缓冲的内存; 每个字节的值是任意的.</p>
  </dd>
</dl>

<h2 id="Return_Value">返回值</h2>
<p>返回值是一个新的<a href="../objects/Buffer.htm">缓冲</a>对象.</p>

<h2 id="Remarks">备注</h2>
<p>如果无法分配内存, 则抛出异常, 如 <em>ByteCount</em> 意外地大或系统虚拟内存不足.</p>

<h2 id="Related">相关</h2>
<p><a href="../objects/Buffer.htm">缓冲对象</a>, <a href="DllCall.htm">动态库调用</a>, <a href="NumPut.htm">置数值</a>, <a href="NumGet.htm">获取数值</a>, <a href="StrPut.htm">置字符串</a>, <a href="StrGet.htm">获取字符串</a>, <a href="../objects/File.htm#RawRead">File.RawRead</a>, <a href="../objects/File.htm#RawWrite">File.RawWrite</a></p>

<h2 id="Examples">示例</h2>
<div class="ex" id="ExString">
<p><a href="#ExString">#1</a>: 通过 <a href="DllCall.htm">动态库调用</a> 使用 <a href="../objects/Buffer.htm">Buffer</a> 从外部函数接收字符串.</p>
<pre>
max_chars := 11

<em>; 为 wsprintf 的 Unicode 版本分配一个缓冲.</em>
bufW := 创建缓冲区(max_chars*2)

<em>; 使用 wsprintfW() 将一个 UTF-16 字符串打印到缓冲中.</em>
动态库调用("wsprintfW", "Ptr", bufW, "Str", "0x%08x", "UInt", 4919, "CDecl")

<em>; 从 bufW 中检索字符串并显示出来.</em>
信息框 获取字符串(bufW, "UTF-16")  <em>; 或者直接 获取字符串(bufW).</em>

<em>; 分配一个缓冲区供 ANSI 版本的 wsprintf 使用.</em>
bufA := 创建缓冲区(max_chars)

<em>; 使用 wsprintfA() 将一个 ANSI 字符串打印到缓冲中.</em>
动态库调用("wsprintfA", "Ptr", bufA, "AStr", "0x%08x", "UInt", 4919, "CDecl")

<em>; 从 bufA 中获取字符串(转换为本地格式), 并将其显示出来.</em>
信息框 获取字符串(bufA, "CP0")
</pre>
</div>

</body>
</html>